public class SelectSort {

/*  外层循环 for (int i = 0; i < n - 1; i++) 遍历数组，每次循环将当前元素与剩余未排序元素中的最小值进行交换。
    内层循环 for (int j = i + 1; j < n; j++) 从当前元素的下一个元素开始，找到剩余未排序元素中的最小值。
    如果找到更小的元素，则更新 minIndex。
    交换当前元素 array[i] 和找到的最小值元素 array[minIndex]。*/

    private static void selectionSort(int[] array) {
        int len = array.length;
        for (int i =0; i<len -1; i++){
            int minMaxIndex = i;
            // 在剩余未排序的元素中找到最小值的索引
            for (int j=i+1;j < len;j++){
                if (array[j] < array[minMaxIndex]){
                    minMaxIndex = j;
                }
            }
            // 交换当前元素和找到的最小值元素
            int temp = array[minMaxIndex];
            array[minMaxIndex] = array[i];
            array[i] = temp;
        }
    }

    // 打印数组
    public static void printArray(int[] array) {
        for (int i : array) {
            System.out.print(i + " ");
        }
        System.out.println();
    }
    public static void main(String[] args) {
        int[] array = {64, 25, 12, 22, 11};

        System.out.println("排序前的数组:");
        printArray(array);

        selectionSort(array);

        System.out.println("排序后的数组:");
        printArray(array);
    }


}
